package com.ziyun.erp.modules.order.dao;


import com.baomidou.mybatisplus.mapper.BaseMapper;
import com.baomidou.mybatisplus.plugins.Page;
import com.baomidou.mybatisplus.plugins.pagination.Pagination;
import com.ziyun.erp.modules.order.entity.ErpCustomerServieceUserEntity;
import com.ziyun.erp.modules.order.entity.ErpOrderEntity;
import com.ziyun.erp.modules.order.entity.OrderInfoEntity;
import com.ziyun.erp.modules.order.vo.ErpOrderCostVo;
import com.ziyun.erp.modules.order.vo.ErpOrderVo;
import com.ziyun.erp.modules.order.vo.OrderRoyaltyVo;
import com.ziyun.erp.modules.production.vo.ErpOrderAllotVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Map;

/**
 * erp订单信息表
 *
 * @author guizhao
 * @date 2018-07-27 11:19:18
 */
@Service("erpOrderDao")
public interface ErpOrderDao extends BaseMapper<ErpOrderEntity> {

    /**
     * 数据总数
     *
     * @param map 查询参数
     * @return
     */
    int countErpOrder(@Param("map") Map<String, Object> map);

    /**
     * 列表查询
     *
     * @param map
     * @return
     */
    List<ErpOrderAllotVo> queryPageErpOrderList(@Param("map") Map<String, Object> map);

    List<ErpOrderVo> selectErpOrderVoByOrderId(@Param("map") Map<String, Object> param);

    /**
     * 查询内部订单号
     *
     * @param orderId 订单号
     * @return
     */
    String selectOrderNoByOrderId(@Param("orderId") Long orderId);

    /**
     * 数据更新
     *
     * @param orderNo 内部订单号
     * @param map     修改参数
     */
    int updateByMap(@Param("map") Map<String, Object> map, @Param("orderNo") String orderNo);

//    List<ErpOrderEntity> selectNotSendConfirmPage(Page<ErpOrderEntity> page);

    List<ErpOrderEntity> selectNotCalculateCommissionPage(Page<ErpOrderEntity> page);

    List<ErpOrderEntity> queryListByProductionId(@Param("productionIds") List<String> productionIds);

    /**
     * 取消订单分配信息
     *
     * @param orderNo
     * @return
     */
    int cancelOrderAllotInfo(@Param("orderNo") String orderNo);

    void updateFinishStatus(@Param("orderIds") List<String> orderIds);

    List<OrderInfoEntity> selectdoOrderFinishList();

    List<ErpCustomerServieceUserEntity> getCsOrPmcList(int type);

    //财务-确认付款列表 by jiangli
    List<ErpOrderEntity> getErpOrderEntityList(@Param("page") Pagination page, @Param("map") Map<String, Object> map);

    int receiveMonryBatch(@Param("map") Map<String, Object> map, @Param("orderNos") List<String> orderNos);

    int updateDialogFormBatch(@Param("map") Map<String, Object> map, @Param("orderNos") List<String> orderNos);

    List<ErpOrderCostVo> queryOrderCostPage(@Param("map") Map<String, Object> params);

    Map<String, Object> countCostOrder(@Param("map") Map<String, Object> params);

    void batchAudit(@Param("map") Map<String, Object> map, @Param("ids") List<String> ids);

    //紫云网提成核算 - 列表
    List<OrderRoyaltyVo> queryOrderRoyaltyPage(Page<OrderRoyaltyVo> page, @Param("map") Map<String, Object> map);

    // 紫云网提成核算 -金额统计
    Map<String,Object> sumOrderCost(@Param("map") Map<String, Object> map);

    void synPayInfo();

}
